﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.ObjectBuilder;
using Bovespa.Infra.Web.Security;
using Bovespa.Infra.Web.UI;
using Bovespa.Sinacor.BaseConhecimento.Shell.Presenters;
using Bovespa.Infra.ExceptionHandling;
using Bovespa.Sinacor.BaseConhecimento.Shell.ArtigoProxy;

/// <summary>
/// Classe publica de manipulacao da pagina VisualizacaoArtigo.aspx
/// </summary>
public partial class VisualizacaoArtigo : BovespaPage<VisualizacaoArtigoPresenter>, IVisualizacaoArtigo
{
    #region Campos

    #endregion

    #region Propriedades

    /// <summary>
    /// Retorna/Atribui valor para o presenter desta view.
    /// </summary>
    [CreateNew]
    public override VisualizacaoArtigoPresenter Presenter
    {
        get { return this.BasePresenter; }
        set
        {
            this.BasePresenter = value;
            this.BasePresenter.View = this;
        }
    }

    #endregion

    #region Eventos

    /// <summary>
    /// Inicializa informacoes da VisualizacaoArtigo, fazendo chamada ao presenter.
    /// </summary>
    /// <remarks>
    /// Este metodo e chamado automaticamente na primeira vez (apenas!) 
    /// que a VisualizacaoArtigo e carregada.
    /// </remarks>
    protected override void InitializeView()
    {
        this.Presenter.OnViewInitialized();
    }

    /// <summary>
    /// Carrega informacoes iniciais da View e faz chamada ao presenter 
    /// </summary>
    /// <remarks>
    /// Este metodo e executado automaticamente toda vez que a VisualizacaoArtigo (Pagina)
    /// e carregada.
    /// </remarks>
    protected override void LoadView()
    {
        this.Presenter.OnViewLoaded();

        if (!IsPostBack)
        {
            this.ObterArtigo();
        }
    }

    #endregion

    #region Metodos Privados

    /// <summary>
    /// Recupera uma lista de entidades de negocio "Produto" por hierarquia.
    /// </summary>
    private void ObterArtigo()
    {
        try
        {   
            Artigo artigo = this.Presenter.ObterArtigo(Convert.ToInt32(Request.QueryString["codigo"]));
                        
            LblTitulo.Text = artigo.NomeTitulo;
            LblProduto.Text = artigo.Produto.Nome;
            LblVersao.Text = artigo.Versao.Nome;
            LblSintoma.Text = artigo.Sintoma;
            LblSolucao.Text = artigo.Solucao;
        }
        catch (BusinessException buEx)
        {
            this.ShowMessage(buEx);
        }
        catch (Exception ex)
        {
            throw;
        }
    }

    #endregion

    #region IVisualizacaoArtigo Members

    #endregion
}


